home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
THINKC
/
TCL1
/
__MANDEL
/
MANDELBR
/
CMANDELH.C
< prev
next >
Wrap
Text File
|
1992-03-28
|
1KB
|
68 lines
// CMandelHLinePhase.c
#include "CMandelHLinePhase.h"
extern long gTickLimit;
CMandelPhase *
CMandelHLinePhase::Perform(void)
{
asm
{
fmovem fp4-fp7,-(sp)
move.l a3,-(sp)
move.l (this),a3
fmove.x CMandelHLinePhase.itsScale(a3),fp0
move.w CMandelHLinePhase.itsMaxDwell(a3),d2
fmove.x CMandelHLinePhase.itsHStart(a3),fp6
fmove.x CMandelHLinePhase.itsVStart(a3),fp7
move.w CMandelHLinePhase.itsLength(a3),d1
move.l CMandelHLinePhase.itsDwellsH(a3),a1
move.l (a1),a0
adda.l CMandelHLinePhase.itsIndex(a3),a0
@0:
move.l Ticks,d0
cmp.l gTickLimit,d0
bgt @4
move.w d2,d0
fmove.x fp6,fp2 ; Z.a = Z0.a
fmove.x fp7,fp5 ; Z.b = Z0.b
bra @2
@1:
fsub.x fp3,fp2
fmul.x fp4,fp5
fscale.x #1.0,fp5
fadd.x fp6,fp2 ; ZZ.a += Z0.a
fadd.x fp7,fp5 ; ZZ.b += Z0.b
@2:
fmove.x fp2,fp4 ; Z = ZZ
fmul.x fp4,fp2 ; temp = ZZ.a * ZZ.a + ZZ.b * ZZ.b
fmove.x fp5,fp3
fmul.x fp5,fp3
fmove.x fp2,fp1
fadd.x fp3,fp1
fcmp.x #4.0,fp1
fbgt @3
dbra d0,@1
@3:
move.w d0,(a0)+
fadd.x fp0,fp6
dbra d1,@0
move.l CMandelHLinePhase.itsNextPhase(a3),d0
bra @5
@4:
fmove.x fp6,CMandelHLinePhase.itsHStart(a3)
move.w d1,CMandelHLinePhase.itsLength(a3)
suba.l (a1),a0
move.l a0,CMandelHLinePhase.itsIndex(a3)
clr.l d0
@5:
move.l (sp)+,a3
fmovem (sp)+,fp4-fp7
}
}